package com.gqj.meter.service;


import com.gqj.meter.domain.MdStockPosInfo;

import java.util.List;
import java.util.Map;

/**
 * 储位信息Service接口
 *
 * @author lxq
 * @date lxq-01-09
 */
public interface IMdStockPosInfoService {
    /**
     * 查询储位信息
     *
     * @param storeLocId 储位信息主键
     * @return 储位信息
     */
    public MdStockPosInfo selectMdStockPosInfoByStoreLocId(Long storeLocId);

    /**
     * 查询储位信息列表
     *
     * @param mdStockPosInfo 储位信息
     * @return 储位信息集合
     */
    public List<MdStockPosInfo> selectMdStockPosInfoList(MdStockPosInfo mdStockPosInfo);

    /**
     * 新增储位信息
     *
     * @param mdStockPosInfo 储位信息
     * @return 结果
     */
    public int insertMdStockPosInfo(MdStockPosInfo mdStockPosInfo);

    /**
     * 修改储位信息
     *
     * @param mdStockPosInfo 储位信息
     * @return 结果
     */
    public int updateMdStockPosInfo(MdStockPosInfo mdStockPosInfo);

    /**
     * 批量删除储位信息
     *
     * @param storeLocIds 需要删除的储位信息主键集合
     * @return 结果
     */
    public int deleteMdStockPosInfoByStoreLocIds(Long[] storeLocIds);

    /**
     * 删除储位信息信息
     *
     * @param storeLocId 储位信息主键
     * @return 结果
     */
    public int deleteMdStockPosInfoByStoreLocId(Long storeLocId);

    /**
     * 校验储位编码是否唯一
     *
     * @param mdStockPosInfo 储位信息
     * @return 结果
     */
    public String checkStoreLocNoUnique(MdStockPosInfo mdStockPosInfo);

    /**
     * 查询储位下拉框
     *
     * @param mdStockPosInfo 储位
     * @return 储位集合
     */
    public List<Map<String, Object>> mdStockPosInfoOptions(MdStockPosInfo mdStockPosInfo);

    /**
     * 获取储位统计信息
     *
     * @return 统计信息
     */
    public List<Map<String, String>> getStockStatistics();

    /**
     * 获取货位利用率统计数据
     *
     * @return 结果
     */
    public List<MdStockPosInfo> getPosAvailability();

    /**
     * 获取储位利用数量比例
     *
     * @return 结果
     */
    public Map<String, Object> getUseStockTotalScale();



    /**
     * 导入储位数据
     *
     * @param mdStockPosInfoList 储位列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importMdStorageAreaInfo(List<MdStockPosInfo> mdStockPosInfoList, Boolean isUpdateSupport, String operName);
}
